/*
 * MMC.h
 *	Multi-Memory Controller
 *  Created on: 2011-2-28
 *      Author: Dallas Cao
 */

#ifndef MMU_H_
#define MMU_H_

#ifndef TYPEDEF_H_
#include "../Typedef.h"
#endif

extern BYTE RAM[8 * 1024];
// Video RAM
extern BYTE VRAM[4 * 1024];
// Save RAM
extern BYTE SRAM[8 * 1024];
// Sprite RAM
extern BYTE SPRAM[0x100];

extern LPBYTE CPU_MEM_BANK[8];
extern LPBYTE PPU_MEM_BANK[12];

extern	void initial();

extern	void setPROM_8K_BANK(BYTE page, INT bank);
extern	void setPROM_16K_BANK(BYTE page, INT bank);
extern	void setPROM_32K_BANK(INT bank0, INT bank1, INT bank2, INT bank3);
extern	void setPROM_32K_BANK(INT bank);

extern	void setCROM_1K_BANK(BYTE page, INT bank);
extern	void setCROM_2K_BANK(BYTE page, INT bank);
extern	void setCROM_4K_BANK(BYTE page, INT bank);
extern	void setCROM_8K_BANK(INT bank);

extern	void setVROM_1K_BANK(BYTE page, INT bank);
extern	void setVROM_2K_BANK(BYTE page, INT bank);
extern	void setVROM_4K_BANK(BYTE page, INT bank);
extern	void setVROM_8K_BANK(INT bank0, INT bank1, INT bank2, INT bank3, INT bank4,
		INT bank5, INT bank6, INT bank7);
extern	void setVROM_8K_BANK(INT bank);

#endif /* MMU_H_ */
